home *** CD-ROM | disk | FTP | other *** search
/ Libris Britannia 4 / science library(b).zip / science library(b) / PROGRAMM / PASCAL / 1463.ZIP / DRAW-2D.ARC / DRAW2D.PAS < prev    next >
Pascal/Delphi Source File  |  1987-06-13  |  5KB  |  155 lines

  1. PROGRAM DRAW2D;
  2. (* 2D-GRAPHIC EDITOR *)
  3.    CONST
  4.      UNIMEAS = 'FEET';
  5.      HARDXPIX = 640;            (** HARDWARE DEPENDENT **)
  6.      HARDYPIX = 200;            (** HARDWARE DEPENDENT **)
  7.      STATYPIX = 40;             (** HARDWARE DEPENDENT **)
  8.      ASPECT   = 0.6;            (** HARDWARE DEPENDENT **)
  9.      MAXSIZE = 500;             (* OBJ. ARRAY SIZE *)
  10. {$I TYPE.PAS}
  11. {$I VAR.PAS}
  12. {$I GRINIT.PAS}
  13. {$I GRMAT.PAS}
  14. {$I TRIM.PAS}
  15. {$I PROC1.PAS}
  16. {$I MOUSEX.PAS}
  17. {$I STATUS1.PAS}
  18. {$I STATUS2.PAS}
  19. {$I MENU.PAS}
  20. {$I NORMCUR.PAS}
  21. {$I CROSSCUR.PAS}
  22. {$I GETMOUSE.PAS}
  23. {$I WRTHDR.PAS}
  24. {$I GETDIR.PAS}
  25. {$I GETNAM.PAS}
  26. {$I GETMRG.PAS}
  27. {$I MERGEDR.PAS}
  28. {$I LOADDR.PAS}
  29. {$I SAVEDR.PAS}
  30. {$I REDRAW.PAS}
  31. {$I DRAWOBJ.PAS}
  32. {$I ROTATES.PAS}
  33. {$I SKALE.PAS}
  34. {$I ZOOMIN.PAS}
  35. {$I ZOOMOUT.PAS}
  36. {$I PAN.PAS}
  37. {$I XLATE.PAS}
  38. {$I PTDIST.PAS}
  39. {$I DELOBJ.PAS}
  40. {$I DELAREA.PAS}
  41. {$I SAVEFILE.PAS}
  42. {$I SELOBJ.PAS}
  43. {$I SELAREA.PAS}
  44. {$I LEV1OPT.PAS}
  45. {$I LEV2OPT.PAS}
  46. {$I LEV3OPT.PAS}
  47. {$I LEV4OPT.PAS}
  48. {$I LEV5OPT.PAS}
  49.    BEGIN
  50.      BELLCODE := 7;         (** HARDWARE DEPENDENT **)
  51.      HRCOLOR := 7;          (** HARDWARE DEPENDENT **)
  52.      NPOLY := 90;
  53.      CLIN := FALSE;
  54.      XWORLD := 60.0;
  55.      BLKLINE := GENSTR(' ',79);
  56.      CLRSCR;
  57.      WRTHDR;
  58.      PAUSE;
  59.    (* INITIALIZATION *)
  60.      HIRES;                    (* TURBO-PASCAL PROC *)
  61.      HIRESCOLOR(HRCOLOR);      (* TURBO-PASCAL PROC *)
  62.      GRINIT(0,HARDXPIX-1,0,HARDYPIX-STATYPIX-1);    (* PIXEL CO-ORD *)
  63.      GRNDC(0.0,0.0,1.0,ASPECT);                     (* NORM. DEVICE CO-ORD *)
  64.      GRVIEW(0.0,0.0,1.0,ASPECT);                    (* VIEWPORT CO-ORD *)
  65.      GRWORLD(0.0,0.0,XWORLD,XWORLD*ASPECT);         (* WORLD CO-ORD *)
  66.      TP := '.DRW';             (* USE '.COP' FOR 8087 VERSION *)
  67.      LASTPOS := 1;
  68.      INITSTK;                                       (* INIT MATRIX STACK *)
  69.      OBJ[1] := 'POINT';
  70.      OBJ[2] := 'LINE';
  71.      OBJ[3] := 'BOX';
  72.      OBJ[4] := 'CIRCLE';
  73.      OBJ[5] := 'V-LINE';
  74.      OBJ[6] := 'H-LINE';
  75.      OTYP := 1;
  76.      MODE[1] := 'DRW ';
  77.      MODE[2] := 'AREA';
  78.      MODE[3] := 'OBJ ';
  79.      MNUM := 1;
  80.      OBJPTR := 1;
  81.      STARTOBJ := FALSE;
  82.      LEV := 1;
  83.      M1 := 0;
  84.      M2 := 0;
  85.      M3 := 0;
  86.      M4 := 0;
  87.      MOUSE(M1,M2,M3,M4);                    (* INIT MOUSE DRIVER *)
  88.      M1 := 8;
  89.      M3 := YPMIN;
  90.      M4 := YPMAX + 8;
  91.      MOUSE(M1,M2,M3,M4);                    (* LIMIT VERTICAL MOVEMENT *)
  92. (* start of program *)
  93.      QUIT := FALSE;
  94.      BUTTON1 := FALSE;
  95.      BUTTON2 := FALSE;
  96.      LOADDR(CODE);
  97.      IF CODE <> 0 THEN QUIT := TRUE;
  98.      IF NOT(QUIT) THEN
  99.         BEGIN
  100.           REDRAW;
  101.           M1 := 4;                   { Set Mouse Cursor to Lower Left }
  102.           M3 := XPMIN;
  103.           M4 := YPMAX;
  104.           Mouse(M1,M2,M3,M4);
  105.           CrossCur;                  { Use Cross for cursor shape }
  106.           CURFLAG := TRUE;
  107.           M1 := 1;                   { Turn on Mouse cursor }
  108.           Mouse(M1,M2,M3,M4);
  109.           MOVCUR(24,12);
  110.           WRITE('Move mouse to select location or option!!');
  111.           RING(1);
  112.         END;
  113.      WHILE NOT(QUIT) DO
  114.         BEGIN
  115.           STOP := FALSE;
  116.           WHILE NOT(STOP) DO
  117.             BEGIN
  118.               GETMOUSE(X,Y,PIXX,PIXY,OPTION);     (* GET INPUT *)
  119.               IF (BUTTON1) OR (BUTTON2) THEN STOP := TRUE;
  120.               IF (BUTTON1) AND (BUTTON2) THEN
  121.                 BEGIN
  122.                  STOP := FALSE;
  123.                  RING2;
  124.                  MOVCUR(24,1);
  125.                  WRITE(BLKLINE);
  126.                  MOVCUR(24,2);
  127.                  WRITE('Only one button at a time!!');
  128.                 END
  129.               ELSE IF (BUTTON1) AND (STARTOBJ) AND (OPTION <> 0) THEN
  130.                 BEGIN
  131.                  STOP := FALSE;
  132.                  RING2;
  133.                  MOVCUR(24,1);
  134.                  WRITE(BLKLINE);
  135.                  MOVCUR(24,2);
  136.                  WRITE('Move mouse cursor into graphics area!!');
  137.                 END
  138.               ELSE IF (BUTTON2) AND (STARTOBJ) AND (OPTION <> 0) THEN STARTOBJ := FALSE;
  139.             END;
  140.           MOVCUR(24,1);
  141.           WRITE(BLKLINE);
  142.           CASE LEV OF
  143.         1:LEV1OPT;
  144.         2:LEV2OPT;
  145.         3:LEV3OPT;
  146.         4:LEV4OPT;
  147.         5:LEV5OPT;
  148.           END; (*CASE*)
  149.         END;
  150.      TEXTMODE(BW80);        (* TURBO-PASCAL PROC *)
  151.      WRITELN;
  152.      WRITELN;
  153.      WRITELN('  ** DRAW-2D  GRAPHIC EDITOR Exiting **');
  154.      RING(1);
  155.    END.